gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
gmock_dep = dependency('gmock', disabler: true, required: false)
if not gtest_dep.found() or not gmock_dep.found()
    gtest_proj = import('cmake').subproject('googletest', required: false)
    if gtest_proj.found()
        gtest_dep = declare_dependency(
            dependencies: [
                dependency('threads'),
                gtest_proj.dependency('gtest'),
                gtest_proj.dependency('gtest_main'),
            ],
        )
        gmock_dep = gtest_proj.dependency('gmock')
    else
        assert(
            not get_option('tests').allowed(),
            'Googletest is required if tests are enabled',
        )
    endif
endif

test_sources = [
    '../occ_pass_through.cpp',
    '../occ_manager.cpp',
    '../occ_status.cpp',
    '../occ_device.cpp',
    '../occ_errors.cpp',
    '../occ_ffdc.cpp',
    '../occ_presence.cpp',
    '../occ_command.cpp',
    '../occ_dbus.cpp',
    '../powercap.cpp',
    '../i2c_occ.cpp',
    '../utils.cpp',
    occ_sensor_hpp,
]

if get_option('with-host-communication-protocol') == 'pldm'
    test_sources += ['../pldm.cpp']
endif

if get_option('power10-support').allowed()
    test_sources += ['../powermode.cpp']
endif

tests = [
    'error_files_tests.cpp',
    'occ_dbus_test.cpp',
    'TestI2cOcc.cpp',
    'utest.cpp',
]

pthread_dep = dependency('threads')

foreach t : tests
    test(
        t,
        executable(
            t.underscorify(),
            t,
            test_sources,
            include_directories: '..',
            dependencies: [gtest_dep, gmock_dep, pthread_dep, deps],
        ),
        workdir: meson.current_source_dir(),
    )
endforeach
